class Parenthesis {
public:
    bool check(char A,char B){
        if(A == '(' && B == ')') return true;
        if(A == '{' && B == '}') return true;
        if(A == '[' && B == ']') return true;
        return false;
    }
    bool chkParenthesis(string A, int n) {
        stack<char> st;
        string s = "{}()[]";
        for(int i = 0;i < n;i++){
            if(find(A.begin(),A.end(),A[i]) == A.end()){
                return false;
            }
            if(!st.empty()){
                char x = st.top();
                if(check(x,A[i]) == true){
                    st.pop();
                }else{
                    st.push(A[i]);
                }
            }else{
                st.push(A[i]);
            }
        }
        if(st.empty()) return true;
        return false;
    }
};
